#pragma once

using namespace System;

namespace SimulatorBase {
	public ref class EventArgsSetSensorMode : public System::EventArgs {
	public:
		EventArgsSetSensorMode(Int32 p, Boolean a) : Port(p), Active(a) {}
		Int32 Port;
		Boolean Active;
	};

	public ref class EventArgsSetLightBrightness : public System::EventArgs {
	public:
		EventArgsSetLightBrightness(Int32 p, Int32 l) : Port(p), Level(l) {}
		Int32 Port;
		Int32 Level;
	};
	public ref class EventArgsSetLightStatus : public System::EventArgs {
	public:
		EventArgsSetLightStatus(Int32 port, Boolean on) : Port(port), On(on) {}
		Int32 Port;
		Boolean On;
	};
	public ref class EventArgsSendMessage : public System::EventArgs {
	public:
		EventArgsSendMessage(Byte msg) : Msg(msg) {}
		Byte Msg;
	};
	public ref class EventArgsOrderMotor : public System::EventArgs {
	public:
		EventArgsOrderMotor(Int32 port, String^ methodName, Int32 param) : Port(port), MethodName(methodName), Param(param) {}
		Int32 Port;
		String^ MethodName;
		Int32 Param;
	};
	public ref class EventArgsCputCLCD : public System::EventArgs {
	public:
		EventArgsCputCLCD(Int32 mode, Char c, Int32 pos) : Mode(mode), C(c), Pos(pos) {}
		Int32 Mode;
		Char C;
		Int32 Pos;
	};
	public ref class EventArgsCputWLCD : public System::EventArgs {
	public:
		EventArgsCputWLCD(UInt32 word) : Word(word) {}
		UInt32 Word;
	};
	public ref class EventArgsCputSLCD : public System::EventArgs {
	public:
		EventArgsCputSLCD(String^ s) : S(s) {}
		String^ S;
	};
	public ref class EventArgsPlay : public System::EventArgs {
	public:
		EventArgsPlay(Byte pitch, Byte length) : Pitch(pitch), Length(length) {}
		Byte Pitch;
		Byte Length;
	};
	public ref class EventArgsSetSoundDuration : public System::EventArgs {
	public:
		EventArgsSetSoundDuration(UInt32 len) : Length(len) {}
		UInt32 Length;
	};
	public ref class EventArgsSetSoundInternote : public System::EventArgs {
	public:
		EventArgsSetSoundInternote(UInt32 len) : Length(len) {}
		UInt32 Length;
	};
	public ref class EventArgsNotifyLoopCount : public System::EventArgs {
	public:
		EventArgsNotifyLoopCount(UInt32 count) : Count(count) {}
		UInt32 Count;
	};
}
